---------->  Furb3T   <----------

presenta:

Facciamo un p� di ReveRsinG !!!

   Salve miei fedeli lettori, la lezione di oggi riguarda il ReversinG; non sapete ancora cosa vuol dire? C'� una sola cosa da fare: CONTINUATE A LEGGERE.

    Il programma che utilizzer� oggi � Applet Botton Factory 4.0, un grazioso prg che serve per costruire applet java per creare bottoni. Il tool di turno per analizzare il prg indovinate qual �? Softice come al solito. Partiamo, lanciate il programma e comparir� subito una NAG nella quale ci sono 2 bottoni: OK e REGISTER. Premete REGISTER e vi apparir� un form per la registrazione del prg. Notiamo subito che bisogna inserire 2 campi, fatelo e poi prima di premere il tasto Register entrate in Softice con Ctrl-D, fissate un BPX HMEMCPY e poi ritornate con F5. Ora premete il tasto Register e....Voil� eccovi dentro Softice, premete F12 circa 7/8 volte almeno fino a quando non sarete all'interno del prg e poi andate avanti con F10 fino ad arrivare a questo punto:

:0046F0F8      mov eax, dword ptr [ebp-04]          ----> scrivete d eax comparir� il nome inserito
:0046F0FB     call 00403F68
                                    ----> controlla che il campo non sia vuoto
:0046F100      mov edx, 0046F1F0
          -----> fate d 0046F1F0 compare un stringa, ma cosa �?
:0046F105      call 00408DA4
                 -----> per capire l'istruzione precedente, analizziamo questa call
:0046F10A      test eax, eax
:0046F10C      jne 0046F1C2

    Ok, quando siamo sulla Call che ci interessa, facciamo un bel TRaceIN con F8, avremo:

.....................          ---------> a noi interessa da questo punto in poi
:00408DB9  repz
:00408DBA  cmpsb
:00408DBB  je 00408DE1
:00408DBD  mov al, byte ptr [esi-01]
  ----> in al verranno messe una ad una le lettere del nostro nome
:00408DC0  cmp al, 61
          -----> viene comparato al con 61 che corrisponde alla lettera a
:00408DC3  jb 00408DCD
:00408DC5  cmp al, 7A
        -----> 7A corrisponde alla lettera z
:00408DC8  ja 00408DCD
:00408DCA  sub al, 20
:00408DCD  mov dl, byte ptr [edi-01]
  ----> muovo in dl le lettere di edi-01, ma edi-01 � la stringa che
:00408DD0  cmp dl, 61
                        veniva caricata in EDX prima della call,
:00408DD3  jb 00408DDD
:00408DD5  cmp dl, 7A
:00408DD8  ja 00408DDD
:00408DDA  sub dl, 20
:00408DDD  sub eax, edx
    -----> in EAX abbiamo il cod Hex delle lettere che compongono il nome
:00408DDF  je 00408DB9
         inserito da noi, in EDX il cod Hex delle lettere che compongono la                                           stringa che abbiamo trovato, e dato che il JE dell'istruzione successiva fa ripetere il loop vuol dire che quella stringa � il vero codice.

    Bene, ora che abbiamo il primo codice dobbiamo trovare il secondo, ed � facilissimo!!!! disabilitate il BPX con BD *, e  premiamo F5, inseriamo nel primo campo il codice vero, ritornate su Softice, riabilitate il BPX con BE *, ritornate nel prg con F5 e premete Register, eccovi di nuovo in Softice. Vai con F12 e poi con F10 fino ad arrivare qui:

:0046F120   mov eax, dword ptr [ebp-04]    ---->  d EAX ed ecco il secondo codice che avete scritto
:0046F123  call 00403F68
                                -----> verifica che il campo non sia vuoto
:0046F128  mov edx, 0046F1F8
                    -----> viene messo in EDX una strana stringa
:0046F12D  call 00408DA4
                  ------> ma questa � la call di prima che fa il controllo, quindi ci� vuol
:0046F132  test eax, eax
                            dire che la stringa in edx � il secondo vero codice
:0046F134  jne 0046F1C2

    Disabilitate il BPX con BD * premete F5, inserite il secondo codice vero, premete Register e .....WOW il vs prg ora � perfettamente registrato senza aver modificato nessuna istruzione. Ebbene il ReversinG � proprio questo, individuare quello che vuole il prg e darglielo senza modificare nulla, in questo modo siete sicuri che tutto funzioner� bene visto che quelli sono i codici che erano stati previsti dai programmatori.

    Bene la lezione e terminata, e ci vediamo alla prossima puntata.

Ringraziamenti: A tutti gli amici di RingZer0 e ad Ins perch� continua a pubblicare i miei tutorials.